/**
 * 
 */
package model;

/**
 * @author Bill
 *
 *abstract superclass of all state classes. Used by the GameDriver class to control game state
 */
public abstract class State {
	
	public abstract String getStateName();
	
	/**
	 * Called when the user presses the pause button.
	 * User is then brought to the pause menu.
	 * ONLY VALID FOR ATTACKSTAGE and SETUPSTAGE
	 * 
	 * @param d - GameDriver to perform operations on
	 */
	abstract void pauseButtonPressed(GameDriver d);
	
	/**
	 * Called when the user presses the continue(might be labelled as something different)
	 *  button, or for the case of AttackStageState, when the current wave of zombosaurs is
	 *  defeated.  
	 * 
	 * @param d - GameDriver to perform operations on
	 */
	abstract void advanceState(GameDriver d);
	
	/**
	 * This is called when the player loses all health (dies), or the 
	 * user presses the "quit" button in the pause menu
	 * The state should then be returned to the main menu and the user
	 * should be shown a message saying they lost
	 *  ONLY VALID IN ATTACKSTAGESTATE AND PAUSESTATE
	 * 
	 * @param d - GameDriver to perform operations on
	 */
	abstract void returnToMainMenu(GameDriver d);

}
